package org.opencv.samples.tutorial5; import java.io.FileOutputStream; import java.util.List; import org.opencv.android.JavaCameraView; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.hardware.Camera; import android.hardware.Camera.PictureCallback; import android.hardware.Camera.Size; import android.util.AttributeSet; import android.util.Log; public class SampleJavaCameraView extends JavaCameraView { private static final String TAG = "Sample::SampleJavaCameraView"; public SampleJavaCameraView(Context context, AttributeSet attrs) { super(context, attrs); } public List<String> getEffectList() { return mCamera.getParameters().getSupportedColorEffects(); } public boolean isEffectSupported() { return (mCamera.getParameters().getColorEffect() != null); } public String getEffect() { return mCamera.getParameters().getColorEffect(); } public void setEffect(String effect) { Camera.Parameters params = mCamera.getParameters(); params.setColorEffect(effect); mCamera.setParameters(params); } public List<Size> getResolutionList() { return mCamera.getParameters().getSupportedPreviewSizes(); } public void setResolution(Size resolution) { disconnectCamera(); mMaxHeight = resolution.height; mMaxWidth = resolution.width; connectCamera(getWidth(), getHeight()); } public Size getResolution() { return mCamera.getParameters().getPreviewSize(); } public void takePicture(final String fileName) { Log.i(TAG, "Tacking picture"); PictureCallback callback = new PictureCallback() { private String mPictureFileName = fileName; @Override public void onPictureTaken(byte[] data, Camera camera) { Log.i(TAG, "Saving a bitmap to file"); Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length); try { FileOutputStream out = new FileOutputStream(mPictureFileName); picture.compress(Bitmap.CompressFormat.JPEG, 90, out); picture.recycle(); mCamera.startPreview(); } catch (Exception e) { e.printStackTrace(); } } }; mCamera.takePicture(null, null, callback); } }